更新大屏数据逻辑

FFIB 2 年之前
父節點
當前提交
bd64c3c2ad
共有 1 個文件被更改,包括 24 次插入16 次删除
  1. 24 16
      api/eqpt_views.py

+ 24 - 16
api/eqpt_views.py

@@ -194,19 +194,19 @@ def get_screen_data(point=None, point_id=None):
194 194
     ipuis = IsolationPointUserInfo.objects.filter(point_id=point.point_id, status=True).order_by('-last_submit_at')
195 195
     total_active_eqpt_num = ipuis.count()
196 196
 
197
-    ipuis = [{**ipui.data, **{
198
-        field.get('key', ''): protect_user_privacy(field) for field in ipui.fields }} for ipui in ipuis]
199
-
200
-    reminds = [{
201
-        'name': ipui.get('name'),
202
-        'room': ipui.get('room'),
203
-        'content': ipui.get('remark'),
204
-    } for ipui in ipuis if ipui.get('remark')]
205
-
206 197
     if point.temperature_measure_type == IsolationPointInfo.SINGLE:
207 198
         start_dt, end_dt = point.match_upload_period
208 199
 
209
-        ipuis_has_upload = []
200
+        ipuis = ipuis.exclude(last_submit_at__range=(start_dt, end_dt), temperature__gt=0.0, temperature__lte=settings.FEVER_TEMPERATURE)
201
+
202
+        ipuis = [{**ipui.data, **{
203
+            field.get('key', ''): protect_user_privacy(field) for field in ipui.fields }} for ipui in ipuis]
204
+        reminds = [{
205
+            'name': ipui.get('name'),
206
+            'room': ipui.get('room'),
207
+            'content': ipui.get('remark'),
208
+        } for ipui in ipuis if ipui.get('remark')]
209
+
210 210
         ipuis_fever = []
211 211
         ipuis_not_upload = []
212 212
         ipuis_unused = []
@@ -215,25 +215,33 @@ def get_screen_data(point=None, point_id=None):
215 215
             temperature = ipui.get('temperature', 0.0)
216 216
             last_submit_at = ipui.get('last_submit_at', '')
217 217
             if not last_submit_at:
218
+                ipui['temperature'] = '-'
219
+                ipui['last_report_time'] = '-'
220
+                ipui['status'] = '未使用'
218 221
                 ipuis_unused.append(ipui)
219 222
                 continue
220 223
                 
221 224
             last_submit_at = tc.make_naive(last_submit_at)
222 225
 
223 226
             if (start_dt < last_submit_at < end_dt) and temperature > settings.FEVER_TEMPERATURE:
227
+                ipui['status'] = '已上报'
224 228
                 ipuis_fever.append(ipui)
225
-            elif (start_dt < last_submit_at < end_dt) and (0.0 < temperature <= settings.FEVER_TEMPERATURE):
226
-                ipuis_has_upload.append(ipui)
227 229
             else:
230
+                ipui['temperature'] = '-'
231
+                ipui['status'] = '未测温'
228 232
                 ipuis_not_upload.append(ipui)
233
+            
234
+        not_upload_temperature_num = len(ipuis_unused) + len(ipuis_not_upload)
235
+        has_upload_temperature_num = total_active_eqpt_num - not_upload_temperature_num
236
+        normal_num = has_upload_temperature_num - len(ipuis_fever)
229 237
         
230 238
         return {
231
-            'eqpts': ipuis_fever + ipuis_unused + ipuis_not_upload + ipuis_has_upload,
239
+            'eqpts': ipuis_fever + ipuis_unused + ipuis_not_upload,
232 240
             'reminds': reminds,
233 241
             'total_active_eqpt_num': total_active_eqpt_num,
234
-            'has_upload_temperature_num': len(ipuis_has_upload) + len(ipuis_fever),
235
-            'not_upload_temperature_num': len(ipuis_unused) + len(ipuis_not_upload),
236
-            'normal_num': len(ipuis_has_upload),
242
+            'has_upload_temperature_num': has_upload_temperature_num,
243
+            'not_upload_temperature_num': not_upload_temperature_num,
244
+            'normal_num': normal_num,
237 245
             'fever_num': len(ipuis_fever),
238 246
             'update_time': tc.local_string(),
239 247
         }